﻿(function () {
    $(function () {

        var _$table = $('#tb');
        var _materialService = abp.services.app.material;

        var _permissions = {
            create: abp.auth.hasPermission("Pages.Bom.Materials.Create"),
            edit: abp.auth.hasPermission("Pages.Bom.Materials.Edit"),
            'delete': abp.auth.hasPermission("Pages.Bom.Materials.Delete")

        };


      var _createOrEditModal = new app.ModalManager({
            viewUrl: abp.appPath + 'Materials/CreateOrEditMaterialModal',
            scriptUrl: abp.appPath + 'Views/Materials/_CreateOrEditMaterialModal.js',
            modalClass: 'CreateOrEditMaterialModal'
        });

      var TableInit = function () {
          var oTableInit = new Object();
          oTableInit.Init = function () {
              _$table.bootstrapTable({
                  url: '/Materials/GetAllMaterials', //请求后台的URL（*）
                  method: 'get', //请求方式（*）
                  toolbar: '#toolbar', //工具按钮用哪个容器
                  striped: true, //是否显示行间隔色
                  cache: false, //是否使用缓存，默认为true，所以一般情况下需要设置一下这个属性（*）
                  pagination: true, //是否显示分页（*）
                  sortable: true, //是否启用排序
                  sortOrder: "asc", //排序方式
                  queryParams: oTableInit.queryParams, //传递参数（*）
                  sidePagination: "server", //分页方式：client客户端分页，server服务端分页（*）
                  pageNumber: 1, //初始化加载第一页，默认第一页
                  pageSize: 10, //每页的记录行数（*）
                  pageList: [10, 25, 50, 100], //可供选择的每页的行数（*）
                  search: false, //是否显示表格搜索，此搜索是客户端搜索，不会进服务端，所以，个人感觉意义不大
                  strictSearch: true,
                  showColumns: true, //是否显示所有的列
                  showRefresh: true, //是否显示刷新按钮
                  minimumCountColumns: 2, //最少允许的列数
                  clickToSelect: true, //是否启用点击选中行
                  //height: 500, //行高，如果没有设置height属性，表格自动根据记录条数觉得表格高度
                  uniqueId: "Id", //每一行的唯一标识，一般为主键列
                  showToggle: true, //是否显示详细视图和列表视图的切换按钮
                  cardView: false, //是否显示详细视图
                  detailView: false, //是否显示父子表
                  showExport: true,                     //是否显示导出
                  exportDataType: "all",              //basic', 'all', 'selected'.
                  columns: [{
                      checkbox: true
                  }, {
                      field: 'Id',
                      align: 'center',
                      title: '序号',
                  },
                  {
                      field: 'MaterialName',
                      align: 'center',
                      title: app.localize('MaterialName')
                  },
                  {
                      field: 'MaterialCode',
                      align: 'center',
                      title: app.localize('MaterialCode')
                  },
                  {
                      field: 'CreationTime',
                      align: 'center',
                      title: app.localize('CreationTime'),
                      formatter: function (value, row, index) {
                          var time = row.CreationTime;
                          return moment(time).format("YYYY-MM-DD HH:mm:ss")
                      }
                  }, {
                      field: 'operate',
                      title: app.localize('operate'),
                      align: 'center',
                      valign: 'middle',
                      clickToSelect: false,
                      formatter: operateFormatter,
                      events: operateEvents
                  }],
              });
          };
          //指定操作组
          function operateFormatter(value, row, index) {
              var $span = '';
              $span.add
              if (_permissions.edit) {
                  $span = $span + '<a class="edit" href="javascript:void(0)" title="'
                      + app.localize('Edit') + '"><i class="glyphicon glyphicon-edit"></i></a>'
              }
              //删除
              if (_permissions.delete) {
                  $span = $span + '<a class="remove" href="javascript:void(0)" title="'
                      + app.localize('Delete') + '"><i class="glyphicon glyphicon-remove"></i></a>'
              }
              return $span;
          }

          //指定table表体操作事件
          window.operateEvents = {
              'click .edit': function (e, value, row, index) {
                  _createOrEditModal.open({ id: row.Id });
              },
              'click .remove': function (e, value, row, index) {
                  deleteMaterial(row);
              }
          };

          //得到查询的参数
          oTableInit.queryParams = function (params) {
              var temp = {   //这里的键的名字和控制器的变量名必须一直，这边改动，控制器也需要改成一样的
                  limit: params.limit,   //页面大小
                  offset: params.offset  //页码
                  //color: $("#txt_search_color").val(),
                  //name: $("#txt_search_name").val(),
                  //issingle: $("#sel_search_issingle").val(),
                  //trend: $("#txt_search_trend").val()
              };
              return temp;
          };
          return oTableInit;
      };

        // #region CRUD按钮操作

      $("#btn-add").click(function () {
          _createOrEditModal.open();
      });

      $("#btn-edit").click(function () {
          var selectedRaido = _$table.bootstrapTable('getSelections');
          if (selectedRaido.length === 0) {
              abp.notify.warn(app.localize('PleaseSelectForEdit'));
          } else {
              _createOrEditModal.open({ id: selectedRaido[0].Id });
          }
      });

      $("#btn-delete").click(function () {
          var selectedRaido = _$table.bootstrapTable('getSelections');
          if (selectedRaido.length === 0) {
              abp.notify.warn(app.localize('PleaseSelectForDelete'));
          } else {
              deleteMaterial(selectedRaido[0]);
          }
      });
        // #endregion

        //删除当前basicMaterials实体
      function deleteMaterial(material) {
          abp.message.confirm(
              app.localize('MaterialDeleteWarningMessage', material.MaterialName),
                  function (isConfirmed) {
                      if (isConfirmed) {
                          _materialService.deleteMaterialAsync({
                              id: material.Id
                          }).done(function () {
                              _$table.bootstrapTable('refresh');
                              abp.notify.success(app.localize('SuccessfullyDeleted'));
                          });
                      }
                  }
              );
      }

        //导出为excel文档
      $('#btn-export').click(function () {
          _materialService
              .getMaterialsToExcel({})
                  .done(function (result) {
                      app.downloadTempFile(result);
                  });
      });

      $("#btn-query").click(function () {
          _$table.bootstrapTable('refresh');
      });

        //制作BasicMaterials事件,用于请求变化后，刷新表格信息
      abp.event.on('app.createOrEditMaterialModalSaved', function () {
          _$table.bootstrapTable('refresh');
      });

      var oTable = new TableInit();
      oTable.Init();
      _$table.bootstrapTable('hideColumn', 'Id');
    });
})();
